#region Copyright Jonathan Quiros

//	
// All rights are reserved. Reproduction or transmission in whole or in 
// part, in any form or by any means, electronic, mechanical or otherwise, 
// is prohibited without the prior written consent of the copyright owner.
//
// Filename: IPartiesRepository.cs
//

#endregion

using System.Collections.Generic;
using Ids.Web.Listing;
using Novagoal.Models;
using Novagoal.Models.Utils;

namespace Novagoal.Repositories
{
    public interface IPartiesRepository
    {
        IEnumerable<Party> GetParties(int personId);

        List<RankingEntry> GetPeopleRanking(int partyId);

        List<RankingEntry> GetPeopleTournament(int tournamentId);

        List<Party> GetParties(Dictionary<PartyListFilter, string> filterList, PartyListSortField sortField,
                            SortDirectionType sortDirection, int currentPage, int pageSize);

        int GetTotalParties(Dictionary<PartyListFilter, string> filterList);

        List<Person> GetPartyMembers(int partyId);

        Party GetParty(int partyId);

        int AddParty(Party party);

        int EditParty(Party party);

        IEnumerable<int> GetPartiesId();
        
        List<Person> GetPeopleNotInParty(int partyId);
        
        void AddPartyMember(int personId, int partyId);
        
        void SetFavoriteTeam(int partyId, int teamId, int personId);
        
        Team GetFavoriteTeam(int personId, int partyId);
        
        void AddMessage(int partyId, int personId, string message);
        
        List<Message> GetMessages(int partyId);
    }
}